<?php

/**
 * nominar actions.
 *
 * @package    SCCEIC
 * @subpackage nominar
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class nominarActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  { 
    $this->categorias = CategoriaPeer::doSelect(new Criteria());
  }
  
  public function executeAjaxnom(sfWebRequest $request)
  {
		$this->getResponse()->setContentType('application/json');
       
		$c = new Criteria();
		$c->setLimit($request->getParameter("limit"));
		$c->add(NominadoPeer::NOMBRE,'%'.$request->getParameter("q").'%',Criteria::ILIKE);
		$result = NominadoPeer::doSelect($c);
		$r = array();
		for($i=0;$i<count($result);$i++)
			$r[$i] =$result[$i]->getNombre();
        return $this->renderText(json_encode($r)); 
  	
  }
  
  public function executeDonominar(sfWebRequest $request)
  {
  	$catId = $request->getParameter("cat");
  	$this->e = $request->getParameter("e","0");

  	$this->form = new NominacionForm(null,array('url' => $this->getController()->genUrl('nominar/ajaxnom')));
  	
  	if($request->isMethod('post'))
  	{
  		$params = array();
  		  		
  		$params['nominado'] = $request->getParameter("autocomplete_nominado");
  		$params['archivo'] = $request->getParameter("archivo");  		
  		
  		$files = $request->getFiles();
  		$this->form->bind($params,$files);
  		
  		if($this->form->isValid())
  		{
  			$val = $this->form->getValues();  	
  			$newname="";
  			if(isset($val['archivo']))		
  				$newname = $val['archivo']->save();
  			$this->redirect('nominar/nominar?cat='.$catId.(isset($val['archivo'])?'&archivo='.$newname:'').'&nominado='.$params['nominado']);
  			return "";
  		}
  	}
  	if(is_null($catId))
  		$this->redirect404();
  	else
  	{
  		$this->categoria = CategoriaPeer::retrieveByPK($catId);
  		$c = new Criteria();
  		$c->add(NominadoPeer::ID_CATEGORIA,$this->categoria->getId(),Criteria::EQUAL);
  		$this->nominados = NominadoPeer::doSelect($c);
  	}
  }

  public function executeNominar(sfWebRequest $request)
  {
  	$nominado = $request->getParameter('nominado');
  	$archivo = $request->getParameter("archivo","");
  	
  	$cat = $request->getParameter('cat');
  	if(is_null($nominado) || is_null($cat))
  		$this->redirect404();
  	else
  	{
  		//Ver si hay un nominado con ese nombre, si no lo hay agregarlo a la lista, si lo hay
  		//Simplemente agregar el voto.
  		$c = new Criteria();
  		$c->add(NominadoPeer::NOMBRE,$nominado,Criteria::EQUAL);
  		$c->add(NominadoPeer::ID_CATEGORIA,$cat,Criteria::EQUAL);
  		$nom = NominadoPeer::doSelectOne($c);
  		if(is_null($nom))
  		{
  			$nom = new Nominado();
  			$nom->setNombre($nominado);
  			$nom->setIdCategoria($cat);
  			$nom->save();
  		}
  		
  		//Guardar voto.
  		$uid = $this->getUser()->getAttribute('email');
  		
  		//Verificar si ya votastes
  		$votoant = NominoPeer::retrieveByPK($nom->getId(),$uid);
  		if(is_null($votoant))
  		{
		  	$voto = new Nomino();
		  	$voto->setIdUsuario($uid);
		  	$voto->setIdNominado($nom->getId());
		  	$voto->setFile($archivo);
		  	
		  	$voto->save();
		  	$this->redirect('nominar/donominar?cat='.$cat.'&e=2');
  		}
  		else
  			$this->redirect('nominar/donominar?cat='.$cat.'&e=1' );
  		
  	}
  }
}
